安装 crossplane

Crossplane 安装到现有的 Kubernetes 集群中,创建 Crossplane pod,实现 Crossplane Provider 资源的安装。

Tip
如果没有 Kubernetes 集群,请使用 Kind在本地创建一个。

先决条件

安装 crossplane

使用 Crossplane 出版的_Helm 图表_安装 Crossplane。

添加 crossplane helm 存储库

使用 helm repo add 命令添加 crossplane 软件仓库。

1helm repo add crossplane-stable https://charts.crossplane.io/stable

使用 helm repo update 更新本地 Helm 图表缓存。

1helm repo update

安装 crossplane helm 图表

使用 helm install 安装 crossplane 舵图。

Tip
使用 helm install --dry-run --debug 选项查看 Crossplane 对集群所做的更改。 Helm 会显示它在不对 Kubernetes 集群做更改的情况下应用了哪些配置。

crossplane 创建并安装到 crossplane-system 命名空间。

1helm install crossplane \
2--namespace crossplane-system \
3--create-namespace crossplane-stable/crossplane

使用 kubectl get pods -n crossplane-system 查看已安装的 crossplane pod。

1kubectl get pods -n crossplane-system
2NAME READY STATUS RESTARTS AGE
3crossplane-6d67f8cd9d-g2gjw 1/1 Running 0 26m
4crossplane-rbac-manager-86d9b5cf9f-2vc4s 1/1 Running 0 26m
Tip

使用"–版本“选项安装特定版本的 crossplane。 例如,安装版本 “1.10.0”:

1helm install crossplane \
2--namespace crossplane-system \
3--create-namespace crossplane-stable/crossplane \
4--version 1.10.0

已安装的部署

Crossplane 在 crossplane-system 名称空间中创建了两个 Kubernetes deployments,用于部署 Crossplane pod。

1kubectl get deployments -n crossplane-system
2NAME READY UP-TO-DATE AVAILABLE AGE
3crossplane 1/1 1 1 8m13s
4crossplane-rbac-manager 1/1 1 1 8m13s

Crossplane 部署

Crossplane 部署从 “crossplane-init 容器 “开始,“init “容器会将 Crossplane_自定义资源定义_安装到 Kubernetes 集群中。

init容器完成后,crossplane pod 会管理两个 Kubernetes 控制器。

  • 软件包管理器控制器会安装

Provider 和配置包。

  • 组件控制器安装并管理

crossplane Composite Resource DefinitionsCompositions 和_Claims_。

crossplane RBAC 管理器的部署

crossplane-rbac-manager “会为已安装的 crossplane Provider 及其 Custom Resource Definitions 创建和管理 Kubernetes ClusterRoles

Crossplane RBAC 管理器设计文档](https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md) 中有更多关于已安装的 ClusterRoles 的信息。

安装选项

定制 crossplane 舵图

Crossplane 支持在安装时通过配置 Helm 图表进行定制。

通过命令行或 Helm values 文件应用自定义功能。

Parameter Description Default
affinity Add affinities to the Crossplane pod deployment. {}
args Add custom arguments to the Crossplane pod. []
configuration.packages A list of Configuration packages to install. []
customAnnotations Add custom annotations to the Crossplane pod deployment. {}
customLabels Add custom labels to the Crossplane pod deployment. {}
deploymentStrategy The deployment strategy for the Crossplane and RBAC Manager pods. "RollingUpdate"
extraEnvVarsCrossplane Add custom environmental variables to the Crossplane pod deployment. Replaces any . in a variable name with _. For example, SAMPLE.KEY=value1 becomes SAMPLE_KEY=value1. {}
extraEnvVarsRBACManager Add custom environmental variables to the RBAC Manager pod deployment. Replaces any . in a variable name with _. For example, SAMPLE.KEY=value1 becomes SAMPLE_KEY=value1. {}
extraObjects To ad

命令行定制

使用 helm install crossplane --set<setting>=<value> 命令行应用自定义设置。

例如,更改镜像拉动策略:

1helm install crossplane \
2--namespace crossplane-system \
3--create-namespace \
4crossplane-stable/crossplane \
5--set image.pullPolicy=Always

Helm 支持以逗号分隔的参数。

例如,更改镜像拉取策略和副本数量:

1helm install crossplane \
2--namespace crossplane-system \
3--create-namespace \
4crossplane-stable/crossplane \
5--set image.pullPolicy=Always,replicas=2

Helm Values 文件

使用 helm install crossplane -f<filename> 应用 Helm values 文件中的自定义设置。

YAML 文件定义了自定义设置。

例如,更改镜像拉取策略和副本数量:

创建包含自定义设置的 YAML。

1replicas: 2
2
3image:
4  pullPolicy: Always

helm install 应用该文件:

1helm install crossplane \
2--namespace crossplane-system \
3--create-namespace \
4crossplane-stable/crossplane \
5-f settings.yaml

功能标志

Crossplane 通过特性标志引入新特性。 默认情况下,alpha 特性是关闭的。 Crossplane 默认启用 beta 特性。 要启用特性标志,请在 helm chart 中设置 args 值。 可用的特性标志可以通过运行 crossplane core start --help 直接找到,也可以查看下表。

Status Flag Description
Beta --enable-composition-revisions Enable support for CompositionRevisions.
Beta --enable-composition-webhook-schema-validation Enable Composition validation using schemas.
Alpha --enable-composition-functions Enable support for Composition Functions.
Alpha --enable-environment-configs Enable support for EnvironmentConfigs.
Alpha --enable-external-secret-stores Enable support for External Secret Stores.
Alpha --enable-usages Enable support for Usages.
Alpha --enable-realtime-compositions Enable support for real time compositions.

values.yaml 文件中或安装时使用 --set flag 设置这些 flag,例如: --set args='{"--enable-composition-functions","--enable-composition-webhook-schema-validation"}'.

安装发布前的 crossplane 版本

从 “master “Crossplane Helm 频道安装预发布版本的 Crossplane。

master “频道中的版本正在开发中,可能不稳定。

Warning
不要在生产中使用 crossplane master 发布。 只能使用 stable 通道。 只能将 master 用于测试和开发。

添加 crossplane 主 Helm 资源库

使用 helm repo add 命令添加 crossplane 软件仓库。

1helm repo add crossplane-master https://charts.crossplane.io/master/

使用 helm repo update 更新本地 Helm 图表缓存。

1helm repo update

安装 crossplane 主 helm 图表

helm install 安装 crossplane master 舵图。

Tip
使用 helm install --dry-run --debug 选项查看 Crossplane 对集群所做的更改。 Helm 会显示它在不对 Kubernetes 集群做更改的情况下应用了哪些配置。

crossplane 创建并安装到 crossplane-system 命名空间。

1helm install crossplane \
2--namespace crossplane-system \
3--create-namespace crossplane-master/crossplane \
4--devel

crossplane 分布情况

第三方供应商可能会维护自己的 crossplane 发行版。 供应商支持的发行版可能具有社区 Crossplane 发行版中没有的功能或工具。

CNCF 认证第三方发行版为”符合 “Community Crossplane 发行版。

###供应商

以下是提供符合要求的 crossplane 发行版的供应商。

Upbound

Upbound是crossplane的创始人,它维护着一个名为Universal CrossplaneUXP)的免费开源crossplane发行版。

upbound UXP 文档 中查找有关 UXP 的信息。